Skip to content

Conversation

@P403n1x87
Copy link
Contributor

Description

We fix the bytecode wrapping to properly support 3.13 and later versions of CPython.

We fix the bytecode wrapping to properly support 3.13 and later versions
of CPython.
@P403n1x87 P403n1x87 requested review from a team as code owners November 18, 2025 11:30
@P403n1x87 P403n1x87 added the changelog/no-changelog A changelog entry is not required for this PR. label Nov 18, 2025
@P403n1x87 P403n1x87 enabled auto-merge (squash) November 18, 2025 11:30
@P403n1x87 P403n1x87 requested a review from tylfin November 18, 2025 11:31
@github-actions
Copy link
Contributor

CODEOWNERS have been resolved as:

ddtrace/internal/assembly.py                                            @DataDog/apm-core-python
ddtrace/internal/wrapping/asyncs.py                                     @DataDog/apm-core-python
ddtrace/internal/wrapping/generators.py                                 @DataDog/apm-core-python
tests/internal/test_wrapping.py                                         @DataDog/debugger-python @DataDog/apm-core-python

@github-actions
Copy link
Contributor

github-actions bot commented Nov 18, 2025

Bootstrap import analysis

Comparison of import times between this PR and base.

Summary

The average import time from this PR is: 252 ± 3 ms.

The average import time from base is: 260 ± 3 ms.

The import time difference between this PR and base is: -7.7 ± 0.1 ms.

Import time breakdown

The following import paths have shrunk:

ddtrace.auto 6.945 ms (2.75%)
ddtrace.bootstrap.sitecustomize 4.125 ms (1.64%)
ddtrace.bootstrap.preload 4.125 ms (1.64%)
ddtrace.internal.settings.dynamic_instrumentation 0.704 ms (0.28%)
ddtrace.internal.remoteconfig.worker 0.685 ms (0.27%)
ddtrace.internal.remoteconfig.client 0.644 ms (0.26%)
ddtrace 2.819 ms (1.12%)
ddtrace.trace 0.749 ms (0.30%)
ddtrace._logger 0.693 ms (0.27%)
ddtrace.internal.telemetry 0.693 ms (0.27%)
ddtrace.internal.telemetry.writer 0.693 ms (0.27%)
ddtrace.internal.utils.version 0.693 ms (0.27%)
ddtrace.internal._unpatched 0.027 ms (0.01%)
json 0.027 ms (0.01%)
json.decoder 0.027 ms (0.01%)
re 0.027 ms (0.01%)
enum 0.027 ms (0.01%)
types 0.027 ms (0.01%)

@pr-commenter
Copy link

pr-commenter bot commented Nov 18, 2025

Performance SLOs

Comparing candidate chore/wrapping-fix-313+ (cc67b9f) with baseline main (c9b3088)

⚠️ Unstable Tests (1 suite)
⚠️ coreapiscenario - 10/10 (1 unstable)

⚠️ context_with_data_listeners

Time: ⚠️ 13.213µs (SLO: <20.000µs 📉 -33.9%) vs baseline: -0.8%

Memory: ✅ 34.544MB (SLO: <35.500MB -2.7%) vs baseline: +4.7%


✅ context_with_data_no_listeners

Time: ✅ 3.276µs (SLO: <10.000µs 📉 -67.2%) vs baseline: -0.4%

Memory: ✅ 34.583MB (SLO: <35.500MB -2.6%) vs baseline: +5.1%


✅ get_item_exists

Time: ✅ 0.576µs (SLO: <10.000µs 📉 -94.2%) vs baseline: -1.1%

Memory: ✅ 34.524MB (SLO: <35.500MB -2.7%) vs baseline: +4.8%


✅ get_item_missing

Time: ✅ 0.634µs (SLO: <10.000µs 📉 -93.7%) vs baseline: ~same

Memory: ✅ 34.465MB (SLO: <35.500MB -2.9%) vs baseline: +4.4%


✅ set_item

Time: ✅ 24.297µs (SLO: <30.000µs 📉 -19.0%) vs baseline: -0.7%

Memory: ✅ 34.642MB (SLO: <35.500MB -2.4%) vs baseline: +4.9%

✅ All Tests Passing (9 suites)
errortrackingflasksqli - 6/6

✅ errortracking-enabled-all

Time: ✅ 2.074ms (SLO: <2.300ms -9.8%) vs baseline: +0.6%

Memory: ✅ 54.401MB (SLO: <56.500MB -3.7%) vs baseline: +4.8%


✅ errortracking-enabled-user

Time: ✅ 2.065ms (SLO: <2.250ms -8.2%) vs baseline: ~same

Memory: ✅ 54.401MB (SLO: <56.500MB -3.7%) vs baseline: +4.8%


✅ tracer-enabled

Time: ✅ 2.074ms (SLO: <2.300ms -9.8%) vs baseline: +0.3%

Memory: ✅ 54.559MB (SLO: <56.500MB -3.4%) vs baseline: +5.1%


flasksqli - 6/6

✅ appsec-enabled

Time: ✅ 3.930ms (SLO: <4.200ms -6.4%) vs baseline: -0.1%

Memory: ✅ 64.428MB (SLO: <66.000MB -2.4%) vs baseline: +4.8%


✅ iast-enabled

Time: ✅ 2.388ms (SLO: <2.800ms 📉 -14.7%) vs baseline: -0.2%

Memory: ✅ 60.575MB (SLO: <62.500MB -3.1%) vs baseline: +4.9%


✅ tracer-enabled

Time: ✅ 2.034ms (SLO: <2.250ms -9.6%) vs baseline: +0.4%

Memory: ✅ 54.677MB (SLO: <56.500MB -3.2%) vs baseline: +4.9%


httppropagationinject - 16/16

✅ ids_only

Time: ✅ 21.095µs (SLO: <30.000µs 📉 -29.7%) vs baseline: +1.0%

Memory: ✅ 34.544MB (SLO: <35.500MB -2.7%) vs baseline: +5.0%


✅ with_all

Time: ✅ 28.053µs (SLO: <40.000µs 📉 -29.9%) vs baseline: +0.9%

Memory: ✅ 34.603MB (SLO: <35.500MB -2.5%) vs baseline: +5.2%


✅ with_dd_origin

Time: ✅ 24.916µs (SLO: <30.000µs 📉 -16.9%) vs baseline: +1.0%

Memory: ✅ 34.623MB (SLO: <35.500MB -2.5%) vs baseline: +5.2%


✅ with_priority_and_origin

Time: ✅ 24.282µs (SLO: <40.000µs 📉 -39.3%) vs baseline: +0.5%

Memory: ✅ 34.603MB (SLO: <35.500MB -2.5%) vs baseline: +5.0%


✅ with_sampling_priority

Time: ✅ 20.883µs (SLO: <30.000µs 📉 -30.4%) vs baseline: ~same

Memory: ✅ 34.524MB (SLO: <35.500MB -2.7%) vs baseline: +4.7%


✅ with_tags

Time: ✅ 25.981µs (SLO: <40.000µs 📉 -35.0%) vs baseline: +0.5%

Memory: ✅ 34.564MB (SLO: <35.500MB -2.6%) vs baseline: +4.9%


✅ with_tags_invalid

Time: ✅ 27.417µs (SLO: <40.000µs 📉 -31.5%) vs baseline: -0.2%

Memory: ✅ 34.465MB (SLO: <35.500MB -2.9%) vs baseline: +4.4%


✅ with_tags_max_size

Time: ✅ 26.499µs (SLO: <40.000µs 📉 -33.8%) vs baseline: ~same

Memory: ✅ 34.603MB (SLO: <35.500MB -2.5%) vs baseline: +5.0%


iast_aspects - 40/40

✅ re_expand_aspect

Time: ✅ 32.071µs (SLO: <40.000µs 📉 -19.8%) vs baseline: -0.5%

Memory: ✅ 39.833MB (SLO: <41.000MB -2.8%) vs baseline: +4.8%


✅ re_expand_noaspect

Time: ✅ 29.729µs (SLO: <40.000µs 📉 -25.7%) vs baseline: +3.1%

Memory: ✅ 39.892MB (SLO: <41.000MB -2.7%) vs baseline: +5.0%


✅ re_findall_aspect

Time: ✅ 2.914µs (SLO: <10.000µs 📉 -70.9%) vs baseline: -0.7%

Memory: ✅ 39.813MB (SLO: <41.000MB -2.9%) vs baseline: +4.5%


✅ re_findall_noaspect

Time: ✅ 1.409µs (SLO: <10.000µs 📉 -85.9%) vs baseline: -1.2%

Memory: ✅ 39.793MB (SLO: <41.000MB -2.9%) vs baseline: +4.8%


✅ re_finditer_aspect

Time: ✅ 4.390µs (SLO: <10.000µs 📉 -56.1%) vs baseline: -0.8%

Memory: ✅ 39.872MB (SLO: <41.000MB -2.8%) vs baseline: +4.7%


✅ re_finditer_noaspect

Time: ✅ 1.398µs (SLO: <10.000µs 📉 -86.0%) vs baseline: -0.1%

Memory: ✅ 39.813MB (SLO: <41.000MB -2.9%) vs baseline: +4.9%


✅ re_fullmatch_aspect

Time: ✅ 2.679µs (SLO: <10.000µs 📉 -73.2%) vs baseline: ~same

Memory: ✅ 39.715MB (SLO: <41.000MB -3.1%) vs baseline: +4.6%


✅ re_fullmatch_noaspect

Time: ✅ 1.301µs (SLO: <10.000µs 📉 -87.0%) vs baseline: -2.4%

Memory: ✅ 39.793MB (SLO: <41.000MB -2.9%) vs baseline: +4.8%


✅ re_group_aspect

Time: ✅ 2.917µs (SLO: <10.000µs 📉 -70.8%) vs baseline: -2.2%

Memory: ✅ 39.892MB (SLO: <41.000MB -2.7%) vs baseline: +4.9%


✅ re_group_noaspect

Time: ✅ 1.622µs (SLO: <10.000µs 📉 -83.8%) vs baseline: -2.4%

Memory: ✅ 39.970MB (SLO: <41.000MB -2.5%) vs baseline: +4.9%


✅ re_groups_aspect

Time: ✅ 3.078µs (SLO: <10.000µs 📉 -69.2%) vs baseline: -1.1%

Memory: ✅ 39.911MB (SLO: <41.000MB -2.7%) vs baseline: +5.0%


✅ re_groups_noaspect

Time: ✅ 1.713µs (SLO: <10.000µs 📉 -82.9%) vs baseline: -0.2%

Memory: ✅ 39.911MB (SLO: <41.000MB -2.7%) vs baseline: +4.8%


✅ re_match_aspect

Time: ✅ 2.731µs (SLO: <10.000µs 📉 -72.7%) vs baseline: ~same

Memory: ✅ 39.892MB (SLO: <41.000MB -2.7%) vs baseline: +5.1%


✅ re_match_noaspect

Time: ✅ 1.323µs (SLO: <10.000µs 📉 -86.8%) vs baseline: +1.0%

Memory: ✅ 39.813MB (SLO: <41.000MB -2.9%) vs baseline: +4.8%


✅ re_search_aspect

Time: ✅ 2.544µs (SLO: <10.000µs 📉 -74.6%) vs baseline: +0.1%

Memory: ✅ 39.892MB (SLO: <41.000MB -2.7%) vs baseline: +4.9%


✅ re_search_noaspect

Time: ✅ 1.211µs (SLO: <10.000µs 📉 -87.9%) vs baseline: -0.4%

Memory: ✅ 40.010MB (SLO: <41.000MB -2.4%) vs baseline: +5.3%


✅ re_sub_aspect

Time: ✅ 3.393µs (SLO: <10.000µs 📉 -66.1%) vs baseline: +0.7%

Memory: ✅ 39.911MB (SLO: <41.000MB -2.7%) vs baseline: +4.8%


✅ re_sub_noaspect

Time: ✅ 1.541µs (SLO: <10.000µs 📉 -84.6%) vs baseline: -0.2%

Memory: ✅ 39.911MB (SLO: <41.000MB -2.7%) vs baseline: +5.1%


✅ re_subn_aspect

Time: ✅ 3.636µs (SLO: <10.000µs 📉 -63.6%) vs baseline: +0.2%

Memory: ✅ 39.813MB (SLO: <41.000MB -2.9%) vs baseline: +4.8%


✅ re_subn_noaspect

Time: ✅ 1.613µs (SLO: <10.000µs 📉 -83.9%) vs baseline: -0.8%

Memory: ✅ 39.951MB (SLO: <41.000MB -2.6%) vs baseline: +5.2%


iastaspectssplit - 12/12

✅ rsplit_aspect

Time: ✅ 1.385µs (SLO: <10.000µs 📉 -86.1%) vs baseline: -2.4%

Memory: ✅ 39.793MB (SLO: <41.000MB -2.9%) vs baseline: +4.8%


✅ rsplit_noaspect

Time: ✅ 0.576µs (SLO: <10.000µs 📉 -94.2%) vs baseline: +0.2%

Memory: ✅ 39.872MB (SLO: <41.000MB -2.8%) vs baseline: +4.7%


✅ split_aspect

Time: ✅ 1.366µs (SLO: <10.000µs 📉 -86.3%) vs baseline: +0.6%

Memory: ✅ 39.813MB (SLO: <41.000MB -2.9%) vs baseline: +4.6%


✅ split_noaspect

Time: ✅ 0.569µs (SLO: <10.000µs 📉 -94.3%) vs baseline: +0.5%

Memory: ✅ 39.872MB (SLO: <41.000MB -2.8%) vs baseline: +5.0%


✅ splitlines_aspect

Time: ✅ 1.371µs (SLO: <10.000µs 📉 -86.3%) vs baseline: -0.2%

Memory: ✅ 39.911MB (SLO: <41.000MB -2.7%) vs baseline: +5.0%


✅ splitlines_noaspect

Time: ✅ 0.583µs (SLO: <10.000µs 📉 -94.2%) vs baseline: -0.5%

Memory: ✅ 39.951MB (SLO: <41.000MB -2.6%) vs baseline: +5.0%


otelspan - 22/22

✅ add-event

Time: ✅ 38.303ms (SLO: <47.150ms 📉 -18.8%) vs baseline: ~same

Memory: ✅ 39.013MB (SLO: <47.000MB 📉 -17.0%) vs baseline: +5.0%


✅ add-metrics

Time: ✅ 255.467ms (SLO: <344.800ms 📉 -25.9%) vs baseline: -0.2%

Memory: ✅ 43.274MB (SLO: <47.500MB -8.9%) vs baseline: +4.8%


✅ add-tags

Time: ✅ 313.114ms (SLO: <321.000ms -2.5%) vs baseline: -0.3%

Memory: ✅ 43.293MB (SLO: <47.500MB -8.9%) vs baseline: +4.9%


✅ get-context

Time: ✅ 78.839ms (SLO: <92.350ms 📉 -14.6%) vs baseline: +0.4%

Memory: ✅ 39.296MB (SLO: <46.500MB 📉 -15.5%) vs baseline: +4.8%


✅ is-recording

Time: ✅ 36.156ms (SLO: <44.500ms 📉 -18.8%) vs baseline: +0.3%

Memory: ✅ 38.924MB (SLO: <47.500MB 📉 -18.1%) vs baseline: +5.2%


✅ record-exception

Time: ✅ 56.791ms (SLO: <67.650ms 📉 -16.1%) vs baseline: -0.2%

Memory: ✅ 39.431MB (SLO: <47.000MB 📉 -16.1%) vs baseline: +4.9%


✅ set-status

Time: ✅ 42.663ms (SLO: <50.400ms 📉 -15.4%) vs baseline: +0.9%

Memory: ✅ 38.848MB (SLO: <47.000MB 📉 -17.3%) vs baseline: +4.7%


✅ start

Time: ✅ 35.321ms (SLO: <43.450ms 📉 -18.7%) vs baseline: -0.1%

Memory: ✅ 38.914MB (SLO: <47.000MB 📉 -17.2%) vs baseline: +5.0%


✅ start-finish

Time: ✅ 82.326ms (SLO: <88.000ms -6.4%) vs baseline: ~same

Memory: ✅ 36.589MB (SLO: <46.500MB 📉 -21.3%) vs baseline: +4.5%


✅ start-finish-telemetry

Time: ✅ 83.599ms (SLO: <89.000ms -6.1%) vs baseline: -0.3%

Memory: ✅ 36.530MB (SLO: <46.500MB 📉 -21.4%) vs baseline: +4.6%


✅ update-name

Time: ✅ 37.096ms (SLO: <45.150ms 📉 -17.8%) vs baseline: ~same

Memory: ✅ 38.948MB (SLO: <47.000MB 📉 -17.1%) vs baseline: +4.8%


packagespackageforrootmodulemapping - 4/4

✅ cache_off

Time: ✅ 341.427ms (SLO: <354.300ms -3.6%) vs baseline: -0.4%

Memory: ✅ 39.895MB (SLO: <41.500MB -3.9%) vs baseline: +4.1%


✅ cache_on

Time: ✅ 0.387µs (SLO: <10.000µs 📉 -96.1%) vs baseline: +1.5%

Memory: ✅ 39.081MB (SLO: <41.000MB -4.7%) vs baseline: +4.0%


ratelimiter - 12/12

✅ defaults

Time: ✅ 2.358µs (SLO: <10.000µs 📉 -76.4%) vs baseline: ~same

Memory: ✅ 34.564MB (SLO: <35.500MB -2.6%) vs baseline: +4.6%


✅ high_rate_limit

Time: ✅ 2.413µs (SLO: <10.000µs 📉 -75.9%) vs baseline: +0.4%

Memory: ✅ 34.623MB (SLO: <35.500MB -2.5%) vs baseline: +4.8%


✅ long_window

Time: ✅ 2.367µs (SLO: <10.000µs 📉 -76.3%) vs baseline: +0.5%

Memory: ✅ 34.623MB (SLO: <35.500MB -2.5%) vs baseline: +5.0%


✅ low_rate_limit

Time: ✅ 2.368µs (SLO: <10.000µs 📉 -76.3%) vs baseline: +0.8%

Memory: ✅ 34.524MB (SLO: <35.500MB -2.7%) vs baseline: +4.9%


✅ no_rate_limit

Time: ✅ 0.830µs (SLO: <10.000µs 📉 -91.7%) vs baseline: +1.4%

Memory: ✅ 34.583MB (SLO: <35.500MB -2.6%) vs baseline: +4.9%


✅ short_window

Time: ✅ 2.500µs (SLO: <10.000µs 📉 -75.0%) vs baseline: +0.6%

Memory: ✅ 34.564MB (SLO: <35.500MB -2.6%) vs baseline: +4.9%


samplingrules - 8/8

✅ average_match

Time: ✅ 138.155µs (SLO: <290.000µs 📉 -52.4%) vs baseline: +0.9%

Memory: ✅ 34.485MB (SLO: <35.500MB -2.9%) vs baseline: +4.4%


✅ high_match

Time: ✅ 172.386µs (SLO: <480.000µs 📉 -64.1%) vs baseline: -1.3%

Memory: ✅ 34.583MB (SLO: <35.500MB -2.6%) vs baseline: +5.2%


✅ low_match

Time: ✅ 98.464µs (SLO: <120.000µs 📉 -17.9%) vs baseline: ~same

Memory: ✅ 603.196MB (SLO: <700.000MB 📉 -13.8%) vs baseline: +4.8%


✅ very_low_match

Time: ✅ 2.654ms (SLO: <8.500ms 📉 -68.8%) vs baseline: +0.6%

Memory: ✅ 70.472MB (SLO: <75.000MB -6.0%) vs baseline: +4.7%

ℹ️ Scenarios Missing SLO Configuration (6 scenarios)

The following scenarios exist in candidate data but have no SLO thresholds configured:

  • coreapiscenario-core_dispatch_listeners
  • coreapiscenario-core_dispatch_no_listeners
  • coreapiscenario-core_dispatch_with_results_listeners
  • coreapiscenario-core_dispatch_with_results_no_listeners
  • errortrackingflasksqli-baseline
  • flasksqli-baseline

@P403n1x87 P403n1x87 merged commit 53726a1 into main Nov 21, 2025
849 checks passed
@P403n1x87 P403n1x87 deleted the chore/wrapping-fix-313+ branch November 21, 2025 15:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/no-changelog A changelog entry is not required for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants